package com.fh.qqclient.service;

import com.fh.qqcommon.Message;
import com.fh.qqcommon.MessageType;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;

/**
 * @author 方小勤
 * @version 1.0~
 * 管理线程
 */
public class ClientConnectServerThead extends Thread{
    //该线程需要持有Socket
    private Socket socket;
    public ClientConnectServerThead(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        //因为Thead需要在后台和服务器通信，因此我们做一个while循环
        while (true){
            System.out.println("客户端线程，等待读取从服务器端发送的消息");
            try {
                ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
                Message message =(Message) objectInputStream.readObject();//如果服务器没有发送Message对象，线程会阻塞在这里
                if (message.getMesType().equals(MessageType.MESSAGE_RET_ONLINE_FRIEND)){
                    //取出在线列表信息，并显示
                    String[] onlineUsers = message.getContent().split(" ");
                    System.out.println("\n======显示在线用户列表======");
                    for(int i =0;i<onlineUsers.length;i++){
                        System.out.println("用户： " + onlineUsers[i]);
                    }
                }else if(message.getMesType().equals(MessageType.MESSAGE_COMM_MES_FRIEND)){//普通的聊天消息
                    System.out.println("\n"+message.getSender()+ " 对 "+message.getReceiver() + " 说 " + message.getContent());
                }else if(message.getMesType().equals(MessageType.MESSAGE_TO_ALL_FRIEND)){
                    System.out.println("\n"+message.getSender()+ " 对大家说： "+message.getContent());
                } else{
                    System.out.println("其他类型不做处理");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }

    public Socket getSocket() {
        return socket;
    }

    public void setSocket(Socket socket) {
        this.socket = socket;
    }
}
